package com.zhidisoft.system.service.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.zhidisoft.common.ResultData;
import com.zhidisoft.system.dao.IFunctionDao;
import com.zhidisoft.system.dao.IRoleDao;
import com.zhidisoft.system.entity.Function;
import com.zhidisoft.system.entity.Role;
import com.zhidisoft.system.entity.User;
import com.zhidisoft.system.service.IMenuService;
import com.zhidisoft.system.vo.MenuVO;

/**
 * 菜单业务层实现类
 * 
 * @author Lu Jianliang
 *
 */
@Service
public class MenuServiceImpl implements IMenuService {

	@Autowired
	private IRoleDao roleDao;

	@Autowired
	private IFunctionDao funcDao;

	@Override
	public List<MenuVO> findMenu(User user) {
		// 获取到当前用户的角色信息
		List<Role> roles = roleDao.findByUserId(user.getId());
		// 判断用户是否拥有角色
		if (roles == null || roles.isEmpty()) {
			return null;
		}
		// 根据角色获取到当前用户的所有权限 一个用户可以有多个角色
		String[] roleIds = new String[roles.size()];
		for (int i = 0; i < roles.size(); i++) {
			roleIds[i] = roles.get(i).getId();
		}
		List<Function> functions = funcDao.findFunctions(1, roleIds);

		if (functions == null || functions.isEmpty()) {

			return null;
		}

		// 把查询到的功能权限转化为ztree需要的数据格式
		List<MenuVO> menus = new ArrayList<MenuVO>();
		for (Function func : functions) {
			menus.add(MenuVO.fromFunction(func));
		}
		return menus;
	}

}
